#include <stdio.h>
#include <stdlib.h>
// qsort(arr, sz, sizeof(arr[0]), cmp_int);
// 参数说明
// 1、待排序数组的首元素地址
// 2、待排序数组的元素个数
// 3、数组中元素大小，bit
// 4、函数指针，实现排序规则。
int cmp_int(const void *e1,const void *e2){
    return *(int*)e1 - *(int*)e2;
}

int cmp_float(const void *e1, const void *e2)
{
    return *(float *)e1 - *(float *)e2;
}
struct student {
    char *name;
    int age;
};
int cmp_struct(const void *e1, const void *e2)
{
    return ((struct student *)e1)->age - ((struct student *)e2)->age;
}
int main()
{
    int arr[] = {9,8,7,6,5,4,3,2,1,0};
    int sz = sizeof(arr)/sizeof(arr[0]);
    qsort(arr, sz, sizeof(arr[0]), cmp_int);
    for(int i=0;i<sz;i++){
        printf("%d ",arr[i]);
    }
    printf("\n");
    
    float arr_float[] = { 1.0, 4.0, 2.0, 3.0 };
    qsort(arr_float, 4, sizeof(arr_float[0]), cmp_float);
    for (int i = 0; i < 4; i++)
    {
        printf("%f ", arr_float[i]);
    }
    printf("\n");

    struct student stu_arr[] = {{"zhangsan", 20}, {"lisi", 30}, {"wangwu", 10}};
    qsort(stu_arr, 3, sizeof(stu_arr[0]), cmp_struct);
    for (int i = 0; i < 3; i++)
    {
        printf("%s ", stu_arr[i].name);
    }
    return 0;
}
